package com.example.warehouse.bus.dao.persist.repository;


import com.example.warehouse.bus.pojo.entity.BusCustomer;
import com.example.warehouse.bus.pojo.vo.BusCustomerStandardVO;
import com.example.warehouse.common.pojo.vo.PageData;

import java.util.List;

/**
 * @author Linger
 * @date 2023-07-03 11:19
 * @desciption:处理客户数据的接口
 */
public interface IBusCustomerRepository {
    /**
     *
     * @param busCustomer 客户数据
     * @return 受影响的行数
     */
    int insert(BusCustomer busCustomer);

    /**
     *
     * 根据公司名统计客户数据的数量
     *
     * @param customerName 公司名
     * @return 匹配客户名的客户数据的数据
     */
    int countByCustomerName(String customerName);

    /**
     *
     * 统计客户手机号码的数量
     *
     * @param phone 手机号码
     * @return 匹配用户名的客户数据的数据
     */
    int countByPhone(String phone);
    /**
     *
     * 统计客户电子邮箱的数量
     *
     * @param email 电子邮箱
     * @return 匹配电子邮箱名的数量
     */
    int countByEmail(String email);

    /**
     * 根据id删除客户数据
     *
     * @param id 客户id
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据id修改客户的数据
     *
     * @param  busCustomer 封装了客户id和新的数据的对象
     * @return 受影响的行数
     */

    int update(BusCustomer busCustomer);


    /**
     * 根据id查询客户数据详情
     *
     * @param id id
     * @return 匹配的客户数据详情，如果没有匹配的数据，则返回null
     */
    BusCustomerStandardVO getStandardById(Long id);

    /**
     * 模糊查询
     *
     * @param customerName     公司名称
     * @param connectionPerson 联系人姓名
     * @param phone            联系人手机号
     * @return 查询结果列表
     */
    PageData<BusCustomerStandardVO> queryByKeyWord(Integer pageNum, Integer pageSize,String customerName, String connectionPerson, String phone);

    /**
     * 查询客户数据列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 客户数据列表
     */
    PageData<BusCustomer> list(Integer pageNum, Integer pageSize);
    /**
     * 升序查询客户数据列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 客户数据列表
     */
    PageData<BusCustomer> listAsc(Integer pageNum, Integer pageSize);
    /**
     * 降序查询客户数据列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 客户数据列表
     */
    PageData<BusCustomer> listDesc(Integer pageNum, Integer pageSize);

    int updateById(BusCustomer user);
}
